package com.yuyou.fn.settlement.service;

import com.yuyou.fn.settlement.entity.ChangeRecord;
import com.yuyou.fn.settlement.entity.MainAccount;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * Created by wens on 2017/3/24.
 */
public interface ISettlementService {

    void bookCost(Long mainAccountId , Long feeCategoryId , Long relMainAccountId, BigDecimal amount, String remark,Date date );

    void bookFeeIncome(Long mainAccountId, Long feeCategoryId, Long relMainAccountId, BigDecimal amount, String remark , Long feeId , Date feeTime );

    void shareFee(Long mainAccountId , Long feeCategoryId ,Long relMainAccountId, BigDecimal amount , String remark, Long feeId , Date feeTime);

    void bookProductDeal(Long mainAccountId, Long feeCategoryId, Long relMainAccountId , BigDecimal amount, String remark , Long orderItemId);

    void bookLeaseDeal(Long mainAccountId , Long relMainAccountId , BigDecimal amount, String remark , Date shareStart, Date shareEnd , Long orderItemId ) ;

    void bookRefundForDeal(BigDecimal amount, String remark , Long orderItemId);

    void bookIncomeForCourse(Long mainAccountId, Long relMainAccountId, BigDecimal amount, String className ,Long  classId , Long regId );

    void decreaseBalanceWithNotCheck(Long mainAccountId, BigDecimal amount,String remark);

    void decreaseBalance(Long mainAccountId, BigDecimal amount,String remark);

    void increaseBalance(Long mainAccountId, BigDecimal amount,String remark);


    void bookRefundForCourse(Long mainAccountId, Long relMainAccountId, String remark, Long classId,BigDecimal refundAmount,List<Long> classLectureIds, Long regId, Long studentId);

    List<ChangeRecord> findChangeRecordsByTradeIdSubjectDirection(Long tracking, String subject, Integer direction);

    void bookConsumeCourse(Date lectureDate,Long mainAccountId,BigDecimal amount, String remark ,Long  classId ,Long  classLectureId, Long regId ,Long studentId );

    void bookTeacherCost(Date lectureDate, Long mainAccountId, Long relMainAccountId, BigDecimal amount, String remark ,Long  classId , Long classLectureId ,Integer lectureNo, Long teacherId );

    MainAccount findMainAccount(Long mainAccountId );

    void checkDifferenceConsume(Long mainAccountId , Long regId , Long classId ,String className , Long studentId,List<Long> classLectureIds );

}
